Skip to content

fix(firestore): preserve async limit_to_last ordering - #17879

Merged
parthea merged 2 commits into
googleapis:mainfrom
Sanjays2402:fix/firestore-async-limit-to-last
Jul 29, 2026
Merged

fix(firestore): preserve async limit_to_last ordering#17879
parthea merged 2 commits into
googleapis:mainfrom
Sanjays2402:fix/firestore-async-limit-to-last

Conversation

@Sanjays2402

Copy link
Copy Markdown
Contributor

Closes #17767

The async limit-to-last path compared a protobuf direction enum with a string, so ascending queries were never reversed before fetching. Compare the enum name, matching the synchronous query path, and cover both directions.

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

  • Make sure to open an issue as a bug/issue before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
  • Ensure the tests and linter pass
  • Code coverage does not decrease (if any source code was changed)
  • Appropriate docs were updated (if necessary)

@Sanjays2402
Sanjays2402 requested a review from a team as a code owner July 23, 2026 10:14
@google-cla

google-cla Bot commented Jul 23, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request fixes an issue in async_query.py where order.direction was compared directly instead of using its .name attribute. It also updates the corresponding unit test test_asyncquery_get_limit_to_last to be parameterized, verifying the behavior for both ascending and descending directions. There are no review comments, so I have no feedback to provide.

@parthea

parthea commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Hi @Sanjays2402, Please can you sign the CLA and mark this PR as ready for review once it's done?

See #17879 (comment)

@parthea
parthea marked this pull request as draft July 23, 2026 16:55
@parthea
parthea marked this pull request as ready for review July 29, 2026 15:08
@parthea parthea added kokoro:force-run Add this label to force Kokoro to re-run the tests. kokoro:run Add this label to force Kokoro to re-run the tests. labels Jul 29, 2026
@parthea parthea assigned parthea and unassigned Sanjays2402 Jul 29, 2026
@yoshi-kokoro yoshi-kokoro removed kokoro:run Add this label to force Kokoro to re-run the tests. kokoro:force-run Add this label to force Kokoro to re-run the tests. labels Jul 29, 2026
@parthea
parthea enabled auto-merge (squash) July 29, 2026 15:50
@parthea
parthea merged commit caf2fdb into googleapis:main Jul 29, 2026
39 of 40 checks passed
@parthea

parthea commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Thanks for the fix, @Sanjays2402!

@release-please release-please Bot mentioned this pull request Jul 29, 2026
sofisl pushed a commit that referenced this pull request Aug 6, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>bigquery-magics: 0.15.1</summary>

##
[0.15.1](bigquery-magics-v0.15.0...bigquery-magics-v0.15.1)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>gapic-generator: 1.38.0</summary>

##
[1.38.0](gapic-generator-v1.37.1...gapic-generator-v1.38.0)
(2026-08-06)


### Features

* **generator:** delegate REST transcoding to google-api-core
([#17766](#17766))
([7b05aab](7b05aab))
* **generator:** gapic generator centralization routing
([#17816](#17816))
([32a2442](32a2442))


### Bug Fixes

* add typing for header_params
([#17914](#17914))
([9e98b93](9e98b93))
* **api-core:** use truthiness check in setup_request_id to support
proto-plus messages
([#18000](#18000))
([ad8f93c](ad8f93c))
* avoid retaining routing parameter instances in cache
([#17961](#17961))
([f64ada2](f64ada2))
* bump aiohttp from 3.13.5 to 3.14.3 in /packages/gapic-generator
([#17990](#17990))
([6ff5815](6ff5815))
* bump cryptography from 48.0.1 to 50.0.0 in /packages/gapic-generator
([#17991](#17991))
([d607f25](d607f25))
* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* **generator:** use flat_ref_types in test templates and delete
remove-unused-imports
([#17900](#17900))
([395f764](395f764))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
* resolve collision with reserved words in samples
([#17912](#17912))
([588cda9](588cda9))
* upgrade Protobuf and gRPC in WORKSPACE
([#17882](#17882))
([5b5ece5](5b5ece5))
</details>

<details><summary>gcp-sphinx-docfx-yaml: 3.3.1</summary>

##
[3.3.1](gcp-sphinx-docfx-yaml-v3.3.0...gcp-sphinx-docfx-yaml-v3.3.1)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-ads-admanager: 0.10.1</summary>

##
[0.10.1](google-ads-admanager-v0.10.0...google-ads-admanager-v0.10.1)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-api-core: 2.34.0</summary>

##
[2.34.0](google-api-core-v2.33.0...google-api-core-v2.34.0)
(2026-08-06)


### Features

* Add Feature Gating configuration helpers.
([#17524](#17524))
([eceea95](eceea95))
* **api-core:** centralize rest transcoding helpers
([#17765](#17765))
([4f21b8b](4f21b8b))


### Bug Fixes

* **api-core:** use truthiness check in setup_request_id to support
proto-plus messages
([#18000](#18000))
([ad8f93c](ad8f93c))
* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* deduplicate x-goog-api-client headers
([#17616](#17616))
([6167e41](6167e41))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-apps-chat: 0.10.4</summary>

##
[0.10.4](google-apps-chat-v0.10.3...google-apps-chat-v0.10.4)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-auth: 2.56.3</summary>

##
[2.56.3](google-auth-v2.56.2...google-auth-v2.56.3)
(2026-08-06)


### Bug Fixes

* **auth:** avoid creating mTLS SSL context for custom async transports
([#17825](#17825))
([fbe33f9](fbe33f9)),
refs
[#17622](#17622)
* **auth:** only trigger mTLS certificate rotation on mTLS endpoints
([#17928](#17928))
([f7b49ea](f7b49ea))
* **auth:** properly extract stdout from gnubby webauthn plugin failures
([#17885](#17885))
([744e826](744e826))
* deduplicate x-goog-api-client headers
([#17616](#17616))
([6167e41](6167e41))
* **oauth2:** avoid redundant JWKS network fetches
([#17891](#17891))
([de53298](de53298))


### Performance Improvements

* **auth:** use generator expression in any() to allow short-circuiting
([735e565](735e565))
* **auth:** use generator expression in any() to allow short-circuiting
([#17937](#17937))
([735e565](735e565))
</details>

<details><summary>google-auth-httplib2: 0.4.1</summary>

##
[0.4.1](google-auth-httplib2-v0.4.0...google-auth-httplib2-v0.4.1)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-access-context-manager: 0.6.1</summary>

##
[0.6.1](google-cloud-access-context-manager-v0.6.0...google-cloud-access-context-manager-v0.6.1)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-agentidentitycredentials: 0.1.1</summary>

##
[0.1.1](google-cloud-agentidentitycredentials-v0.1.0...google-cloud-agentidentitycredentials-v0.1.1)
(2026-08-06)


### Features

* **google/cloud/agentidentitycredentials/v1beta:** add
google-cloud-agentidentitycredentials v1beta
([#17898](#17898))
([b692dae](b692dae))
* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-audit-log: 0.6.1</summary>

##
[0.6.1](google-cloud-audit-log-v0.6.0...google-cloud-audit-log-v0.6.1)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-backupdr: 0.10.1</summary>

##
[0.10.1](google-cloud-backupdr-v0.10.0...google-cloud-backupdr-v0.10.1)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-batch: 0.22.2</summary>

##
[0.22.2](google-cloud-batch-v0.22.1...google-cloud-batch-v0.22.2)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-biglake: 0.5.1</summary>

##
[0.5.1](google-cloud-biglake-v0.5.0...google-cloud-biglake-v0.5.1)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-biglake-hive: 0.3.2</summary>

##
[0.3.2](google-cloud-biglake-hive-v0.3.1...google-cloud-biglake-hive-v0.3.2)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-bigquery: 3.43.0</summary>

##
[3.43.0](google-cloud-bigquery-v3.42.3...google-cloud-bigquery-v3.43.0)
(2026-08-06)


### Features

* add pandas-gbq capability helper
([#17957](#17957))
([2207ca6](2207ca6))


### Bug Fixes

* **bigquery:** Fix bigquery socket leak
([#17953](#17953))
([8c26b38](8c26b38))
* remove stray debug print in RangeQueryParameter constructor
([#17973](#17973))
([fe7bfd0](fe7bfd0))


### Documentation

* add connector libraries overview table to package README
([#17939](#17939))
([71bc622](71bc622))
* correct return type in CellDataParser.time_to_py docstring
([#17972](#17972))
([bd1e224](bd1e224))
</details>

<details><summary>google-cloud-bigquery-storage: 2.40.0</summary>

##
[2.40.0](google-cloud-bigquery-storage-v2.39.0...google-cloud-bigquery-storage-v2.40.0)
(2026-08-06)


### Features

* delegate ReadRowsPage.to_arrow to pandas_gbq.arrow
([#17938](#17938))
([aedc66f](aedc66f))


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
</details>

<details><summary>google-cloud-binary-authorization: 1.19.1</summary>

##
[1.19.1](google-cloud-binary-authorization-v1.19.0...google-cloud-binary-authorization-v1.19.1)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-build: 3.38.1</summary>

##
[3.38.1](google-cloud-build-v3.38.0...google-cloud-build-v3.38.1)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-commerceproducer: 0.1.1</summary>

##
[0.1.1](google-cloud-commerceproducer-v0.1.0...google-cloud-commerceproducer-v0.1.1)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-containeranalysis: 2.22.1</summary>

##
[2.22.1](google-cloud-containeranalysis-v2.22.0...google-cloud-containeranalysis-v2.22.1)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-core: 2.6.1</summary>

##
[2.6.1](google-cloud-core-v2.6.0...google-cloud-core-v2.6.1)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-documentai-toolbox: 0.17.2</summary>

##
[0.17.2](google-cloud-documentai-toolbox-v0.17.1...google-cloud-documentai-toolbox-v0.17.2)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-filestore: 1.17.1</summary>

##
[1.17.1](google-cloud-filestore-v1.17.0...google-cloud-filestore-v1.17.1)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-firestore: 2.28.1</summary>

##
[2.28.1](google-cloud-firestore-v2.28.0...google-cloud-firestore-v2.28.1)
(2026-08-06)


### Bug Fixes

* **firestore:** BulkWriter pop from an empty deque
([#17490](#17490))
([8e826f0](8e826f0))
* **firestore:** preserve async limit_to_last ordering
([#17879](#17879))
([caf2fdb](caf2fdb))
</details>

<details><summary>google-cloud-gke-hub: 1.25.1</summary>

##
[1.25.1](google-cloud-gke-hub-v1.25.0...google-cloud-gke-hub-v1.25.1)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-iam: 2.24.1</summary>

##
[2.24.1](google-cloud-iam-v2.24.0...google-cloud-iam-v2.24.1)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-logging: 3.16.2</summary>

##
[3.16.2](google-cloud-logging-v3.16.1...google-cloud-logging-v3.16.2)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-memorystore: 0.5.4</summary>

##
[0.5.4](google-cloud-memorystore-v0.5.3...google-cloud-memorystore-v0.5.4)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-ndb: 2.5.1</summary>

##
[2.5.1](google-cloud-ndb-v2.5.0...google-cloud-ndb-v2.5.1)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-network-connectivity: 2.17.0</summary>

##
[2.17.0](google-cloud-network-connectivity-v2.16.0...google-cloud-network-connectivity-v2.17.0)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-network-services: 0.10.2</summary>

##
[0.10.2](google-cloud-network-services-v0.10.1...google-cloud-network-services-v0.10.2)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
* update googleapis and regenerate
([#17933](#17933))
([f7a23a0](f7a23a0))
</details>

<details><summary>google-cloud-pubsub: 2.39.1</summary>

##
[2.39.1](google-cloud-pubsub-v2.39.0...google-cloud-pubsub-v2.39.1)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
</details>

<details><summary>google-cloud-quotas: 0.6.2</summary>

##
[0.6.2](google-cloud-quotas-v0.6.1...google-cloud-quotas-v0.6.2)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-redis-cluster: 0.5.2</summary>

##
[0.5.2](google-cloud-redis-cluster-v0.5.1...google-cloud-redis-cluster-v0.5.2)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-service-control: 1.21.0</summary>

##
[1.21.0](google-cloud-service-control-v1.20.0...google-cloud-service-control-v1.21.0)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-spanner: 3.69.1</summary>

##
[3.69.1](google-cloud-spanner-v3.69.0...google-cloud-spanner-v3.69.1)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* **metrics:** fix GFE and AFE metrics publishing
([#17561](#17561))
([abf1178](abf1178))
* **spanner:** escape embedded backticks in dbapi escape_name
([#17810](#17810))
([c8b0b28](c8b0b28))
* **spanner:** implement dict protocol and nested unwrapping for
JsonObject
([#17915](#17915))
([06c1f05](06c1f05)),
refs
[#15870](#15870)
</details>

<details><summary>google-cloud-storage: 3.13.1</summary>

##
[3.13.1](google-cloud-storage-v3.13.0...google-cloud-storage-v3.13.1)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-cloud-storage-control: 1.13.0</summary>

##
[1.13.0](google-cloud-storage-control-v1.12.0...google-cloud-storage-control-v1.13.0)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-support: 0.5.2</summary>

##
[0.5.2](google-cloud-support-v0.5.1...google-cloud-support-v0.5.2)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17933](#17933))
([f7a23a0](f7a23a0))
</details>

<details><summary>google-cloud-tasks: 2.24.0</summary>

##
[2.24.0](google-cloud-tasks-v2.23.0...google-cloud-tasks-v2.24.0)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-cloud-testutils: 1.9.2</summary>

##
[1.9.2](google-cloud-testutils-v1.9.1...google-cloud-testutils-v1.9.2)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>google-developer-knowledge: 0.1.1</summary>

##
[0.1.1](google-developer-knowledge-v0.1.0...google-developer-knowledge-v0.1.1)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-maps-navconnect: 0.2.1</summary>

##
[0.2.1](google-maps-navconnect-v0.2.0...google-maps-navconnect-v0.2.1)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17893](#17893))
([e70ab6f](e70ab6f))
</details>

<details><summary>google-resumable-media: 2.10.1</summary>

##
[2.10.1](google-resumable-media-v2.10.0...google-resumable-media-v2.10.1)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>googleapis-common-protos: 1.75.1</summary>

##
[1.75.1](googleapis-common-protos-v1.75.0...googleapis-common-protos-v1.75.1)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>grafeas: 1.24.0</summary>

##
[1.24.0](grafeas-v1.23.0...grafeas-v1.24.0)
(2026-08-06)


### Features

* update googleapis and regenerate
([#17933](#17933))
([f7a23a0](f7a23a0))
</details>

<details><summary>grpc-google-iam-v1: 0.14.5</summary>

##
[0.14.5](grpc-google-iam-v1-v0.14.4...grpc-google-iam-v1-v0.14.5)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>proto-plus: 1.28.3</summary>

##
[1.28.3](proto-plus-v1.28.2...proto-plus-v1.28.3)
(2026-08-06)


### Bug Fixes

* bump grpcio to 1.59.0; require Python 3.10+
([#17351](#17351))
([a53487a](a53487a))
* **proto-plus:** add context to TypeErrors during message manipulation
([#17682](#17682))
([08f21a6](08f21a6))
* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

<details><summary>sqlalchemy-bigquery: 1.17.2</summary>

##
[1.17.2](sqlalchemy-bigquery-v1.17.1...sqlalchemy-bigquery-v1.17.2)
(2026-08-06)


### Bug Fixes

* require Protobuf 6.33.5+
([#17743](#17743))
([d267342](d267342))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

4 participants